﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace MvcBlog.Models
{
    public class BlogDbContext : DbContext
    {
        public DbSet<Post> Posts { get;set;}
        public DbSet<Comment> Comments { get; set; }
        public DbSet<PostCategory> PostCategories { get; set; }
    }

    public class BlogInitializer : DropCreateDatabaseIfModelChanges<BlogDbContext>
    {
        protected override void Seed(BlogDbContext context)
        {
            base.Seed(context);
            var cat = new List<PostCategory>{
                new PostCategory{
                     Name = "Cat 1"
                },
                new PostCategory {
                    Name = "Cat 2"
                }
            };

            cat.ForEach(c => context.PostCategories.Add(c));
            context.SaveChanges();
            
            
            var posts = new List<Post>{
                new Post {
                    Title = "My first post",
                    Content = "This is my first post",
                    PostDate = new DateTime(2011, 1, 1)
                    },
                new Post {
                    Title = "Second post",
                    Content = "This is my second post",
                    PostDate = new DateTime(2011, 1, 2)
                    },


                new Post {
                    Title = "Lorem ipsum dolor sit amet",
                    Content = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                                Cras scelerisque consectetur tellus, id euismod nunc commodo in. Maecenas ac neque dui, 
                                in tincidunt nisl. Integer at fringilla massa. Nulla fringilla feugiat leo sit amet ullamcorper. 
                                Morbi dictum, purus et ullamcorper ultrices, nulla metus vehicula justo, 
                                vitae facilisis urna felis quis justo. Nam at venenatis massa. 
                                Nam consequat molestie eros eleifend lacinia. Integer mi risus, fringilla id consectetur vitae, 
                                consectetur at massa. Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                                Ut fermentum imperdiet sodales. Morbi velit nisi, vehicula nec convallis at, 
                                viverra at enim. Nunc porta sagittis lobortis. Nullam ac ante mauris. Ut tristique metus eu arcu ornare pretium. ",
                    PostDate = new DateTime(2011, 2, 3)
                    },
                new Post {
                    Title = "Proin eget eros at mi accumsan vehicula",
                    Content = @"Proin eget eros at mi accumsan vehicula. Aliquam auctor faucibus ultricies. Curabitur vel purus lorem, 
                                nec scelerisque libero. Phasellus cursus euismod tristique. Nunc molestie congue pulvinar. Donec volutpat tincidunt ultrices. 
                                Duis nunc sem, tincidunt eget eleifend quis, feugiat et felis. Quisque non leo mi, a facilisis lacus. 
                                Maecenas imperdiet dui non sapien vehicula dapibus. Cras vitae felis nulla. Ut et mi justo. Curabitur congue dapibus placerat. 
                                Suspendisse ut est dolor. ",
                    PostDate = new DateTime(2011, 2, 5),
                    CategoryID = 1
                    },

                new Post {
                    Title = "Aliquam erat volutpat",
                    Content = @"Aliquam erat volutpat. Nulla id urna sit amet sapien facilisis convallis. Nullam auctor pellentesque mi. 
                                Ut aliquet, ipsum euismod tincidunt pellentesque, tortor ligula cursus velit, sed viverra neque eros porta enim. 
                                Nullam dictum convallis ligula, eget rhoncus felis rhoncus ac. Vivamus nec odio justo, ut porttitor nulla. 
                                Aliquam porttitor, magna accumsan dignissim mollis, dolor arcu egestas tortor, sit amet sodales libero leo quis tellus. 
                                Integer placerat urna sed lectus bibendum porta. Sed ut nibh enim. Nulla facilisi. Ut et vestibulum quam. ",
                    PostDate =  new DateTime(2011, 2, 17)
                    },
                new Post {
                    Title = "Maecenas ullamcorper vestibulum nunc",
                    Content = @"Maecenas ullamcorper vestibulum nunc, vel tempus odio pretium sed. Nullam vestibulum est vitae elit ornare sed 
                                consectetur turpis interdum. Suspendisse at sem lectus, tristique suscipit tortor. Ut tortor nulla, dictum non pharetra nec, 
                                hendrerit ut risus. Proin nec porta felis. Aliquam iaculis tortor in massa mattis a tempus dui sodales. 
                                Aliquam egestas varius aliquet. Aenean mattis euismod turpis eget dignissim. Phasellus volutpat, mauris et euismod euismod, 
                                lacus turpis tempor eros, ultrices convallis neque tortor et sapien. Nulla felis lectus, consectetur ac ultrices in, 
                                vulputate pharetra felis. Donec quis dolor at est mattis ultrices eleifend laoreet velit. Curabitur vel blandit nisi. 
                                Cras diam dui, tempus aliquam sodales auctor, dignissim luctus dolor. Nullam luctus tempor arcu lacinia blandit. ",
                    PostDate = new DateTime(2011, 3, 7),
                    CategoryID = 2
                    },                

                new Post {
                    Title = "Nullam bibendum dictum mauris",
                    Content = @"Nullam bibendum dictum mauris, a pretium odio malesuada vitae. Pellentesque imperdiet lobortis augue sit amet condimentum. 
                                Pellentesque et dolor at ante dignissim varius in vel justo. Nunc leo sapien, eleifend non semper a, mattis a mauris. 
                                Praesent eleifend quam sit amet est tempus aliquam. Pellentesque nec sem lorem. In laoreet fringilla quam ac tincidunt. 
                                Cras vehicula elementum mi, a facilisis nisi lobortis a. Suspendisse ultricies turpis non turpis ultricies pharetra. 
                                Praesent gravida ipsum ac lectus venenatis nec fermentum lorem auctor. ",
                    PostDate = new DateTime(2011, 3, 12),
                    CategoryID = 1
                    },
                    

                new Post {
                    Title = "Aenean convallis fermentum augue id pulvinar",
                    Content = @"Aenean convallis fermentum augue id pulvinar. Suspendisse potenti. Ut in lorem vitae tortor egestas scelerisque id vel ipsum. 
                                Mauris quis vulputate nibh. Duis tempus ornare dolor id fringilla. Mauris non nunc nec tortor varius blandit nec quis nunc. 
                                Proin suscipit enim non orci dictum semper iaculis neque hendrerit. Donec lorem mi, malesuada in consectetur quis, 
                                bibendum nec lectus. Donec luctus nibh vitae est mattis ultrices. Vivamus tincidunt ullamcorper neque. Suspendisse potenti. 
                                Phasellus vel dolor lorem, nec pellentesque risus. Proin et lobortis nunc. Mauris eu leo eget augue semper lacinia at ac quam. 
                                Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi in tempor nibh",
                    PostDate = new DateTime(2011, 3, 14),
                    CategoryID = 2
                    }
                };
            posts.ForEach(d => context.Posts.Add(d));
            context.SaveChanges();

            List<Comment> comments = new List<Comment>()
            {
                new Comment{
                    Autor = "Simo",
                    Content = "Coment 1",
                    PostID = 1
                },
                new Comment{
                    Autor = "Simo",
                    Content = "Coment 2",
                    PostID = 1
                },

                new Comment{
                    Autor = "Simo",
                    Content = "Coment 1",
                    PostID = 2
                },
                new Comment{
                    Autor = "Simo",
                    Content = "Coment 2",
                    PostID = 2
                },
 
                new Comment{
                    Autor = "Simo",
                    Content = "Coment 1",
                    PostID = 3
                },
                new Comment{
                    Autor = "Simo",
                    Content = "Coment 2",
                    PostID = 3
                },

            };
            comments.ForEach(c => context.Comments.Add(c));
            context.SaveChanges();
        }
    }
}